home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / prog / cmcrc10.arj / CRCTABLE.C < prev    next >
Text File  |  1994-02-06  |  1KB  |  60 lines

  1. /* CRCTABLE 1.0  Public Domain by Celso Minnitti, Jr  Feb-06-94     */
  2. /* This program will generate the crc16_table and CRC32_table        */
  3. /* that are used by CMCRC.ASM                                        */
  4.  
  5. #include <stdio.h>
  6. #define CRC32_POLYNOMIAL 0xEDB88320
  7. #define CRC16_POLYNOMIAL 0xA001
  8.  
  9. void main()
  10. {
  11.     unsigned long crc32Table[256];
  12.     unsigned int crc16Table[256];
  13.     unsigned int crc;
  14.     unsigned long crc32;
  15.     int i, j;
  16.  
  17.     printf("CRCTABLE 1.0  Public Domain by Celso Minnitti, Jr  Feb-06-94\n\n");
  18.  
  19.     for (i = 0; i < 256; i++) {
  20.         crc = i;
  21.         for (j = 8; j > 0; j--) {
  22.             if (crc & 1)
  23.                 crc = (crc >> 1) ^ CRC16_POLYNOMIAL;
  24.             else
  25.                 crc >>= 1;
  26.         }
  27.         crc16Table[i] = crc;
  28.     }
  29.  
  30.     printf("\ncrc16_table\tlabel\tword");
  31.     for (i = 0; i < 256; i++) {
  32.         if (!(i%32) && i) printf("\n; %Xh", i);
  33.         if (!(i%8)) printf("\n\tdw ");
  34.         if (i%8 != 7) printf("0%04Xh, ", crc16Table[i]);
  35.         else
  36.             printf("0%04Xh", crc16Table[i]);
  37.     }
  38.     printf("\n");
  39.  
  40.     for (i = 0; i < 256; i++) {
  41.         crc32 = i;
  42.         for (j = 8; j > 0; j--) {
  43.             if (crc32 & 1)
  44.                 crc32 = (crc32 >> 1) ^ CRC32_POLYNOMIAL;
  45.             else
  46.                 crc32 >>= 1;
  47.         }
  48.         crc32Table[i] = crc32;
  49.     }
  50.  
  51.     printf("\ncrc32_table\tlabel\tdword");
  52.     for (i = 0; i < 256; i++) {
  53.         if (!(i%16) && i) printf("\n; %Xh", i);
  54.         if (!(i%4)) printf("\n\tdd ");
  55.         if (i%4 != 3) printf("0%08lXh, ", crc32Table[i]);
  56.         else
  57.             printf("0%08lXh", crc32Table[i]);
  58.     }
  59. }
  60.